<?php
/**
 * 验证相关
 * 发仔<i@fazi.me> 2018-07-09
 */
namespace app\open\controller;

use app\open\validate;
use app\open\model;
/**
 * @name【用户与权限】
 */
class Auth extends Base
{
    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * @name【1.1 多端登录】
     * @method【POST】
     * @table【user,role,area】
     */
    public function login(){
        $params = ( new validate\UserValidate())->scene('login_by_name')->goCheck()->getCurrentData();
        $session = (new model\User())->login($params['username'], $params['password']);
        return $this->retSucc(['data' => $session]);
    }

    /**
     * @name【1.2 获取登录用户菜单】
     * @desc【】
     * @method【post】
     * @allow 【】
     * @param 【】
     * @return
     * @throws
     */
    public function getMyMenu()
    {
        $list = (new model\Menu())->user($this->session['user']['user_id']);
        //生成HTMl
        $html = "";
        foreach ( $list AS $first_key => $first_value) {
            $html = " <li class='layui-nav-item'><a class='{$first_key['url']}' href='javascript:;'>{$first_value['name']}xxxxx</a>";
            if($first_value['children']) {
                $html .= "<span class=\"layui-nav-more\"></span><dl class='layui-nav-child'>";
                foreach($first_value['children'] AS $second_key => $second_value) {
                    $second_value['mode'] == 1 && $html .= "<dd><a href='{$second_value['url']}'>{$second_value['name']}</a></dd>";
                }
                $html .= "</dl>";
            }
            $html .= "</li>";
        }
        return $this->res($html);
    }

    /**
     * @name【1.2 获取用户菜单】
     * @desc【获取用户权限相关的菜单】
     * @method【post】
     * @param 【
     *  user_id $ int $ 5 $  用户ID #
     * 】
     * @table【user,role】
     * @allow【user_id】
     * @return
     * @throws
     */
    public function getUserMenu() {
        $param = $this->getParam(new validate\MenuValidate(),'user');
        $list = (new model\Menu())->user($param['user_id']);

        return $this->res($list);
    }

    /**
     * @name【1.3 获取角色菜单】
     * @desc【获取用户权限相关的菜单】
     * @method【post】
     * @param 【
     *  role_id $ int $ 1 $  角色ID #
     * 】
     * @table【user,role】
     * @allow【user_id】
     * @return
     * @throws
     */
    public function getRoleMenu() {
        $param = $this->getParam(new validate\MenuValidate(),'role');
        $list = (new model\Menu())->role($param['role_id']);

        return $this->res($list);
    }

    /**
     * @name【2.1 角色列表】
     * @desc【角色列表或全部】
     * @method【get】
     * @grop【role】
     * @table【role,area】
     * @param【
     * fields $ string $ * $ 字段名称 #
     * where_json $ json $  $ 查询条件 #
     * is_all $ int $ 0 $ 是否返回全部  #
     * page $ int $ 1 $ 页数 #
     * pagenum $ int $ 20 $记录数
     * 】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * count $ int $ 100 $ 结果总数 #
     * list $ json $ $ 结果列表 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getRole()
    {
        $data = [];
        //调用集成
        $data['count'] = $this->getCountCommon(new model\Role(),['area']);
        $data['list'] = $data['count'] ? $this->getListOrAll(new model\Role(),['area']) : [];
        //MDDEL
        return $this->res($data);
    }

}